package mes.kanban.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import mes.kanban.entity.MesConfigList;
import mes.kanban.respository.ConfigListRespository;
import mes.kanban.service.ConfigListI;
import mes.kanban.util.IsNotNullValit;
import mes.kanban.vo.MesConfigListVO;

/**
 * 配置详情接口
 * @author gjy
 *
 * 2018年1月26日下午3:55:59
 */
@Service
public class ConfigListImpl implements ConfigListI {
	
	@Autowired
	private ConfigListRespository configListRespository;
	
	@Override
	public List<MesConfigList> getAllConfigList() {
		return configListRespository.findAll();
	}
	
	@Override
	public List<MesConfigList> getConfigsByPolingConfigId(String polingConfigId) {
		return configListRespository.getConfigListByPolingConfigId(polingConfigId);
	}
	
	
	@Override
	public List<MesConfigListVO> getConfigListByPolingConfigIdAndSO(String polingConfigId) {
		
		List<MesConfigListVO> vos = new ArrayList<MesConfigListVO>();
		
		List<MesConfigList> configlists = configListRespository.getConfigListByPolingConfigIdAndForShow(polingConfigId);
		
		for (int i = 0; i < configlists.size(); i++) {
			
			MesConfigList config = configlists.get(i);
			
			MesConfigListVO vo = new MesConfigListVO();
			
			BeanUtils.copyProperties(config, vo);
			
			//将类型转化成文字
			if(IsNotNullValit.StringIsNotNull(vo.getShowType())) {
				if("video".equals(vo.getShowType())) {
					vo.setShowTypeDesc("视频");
				}else if("table".equals(vo.getShowType())) {
					vo.setShowTypeDesc("表格");
				}else if("ppt".equals(vo.getShowType())) {
					vo.setShowTypeDesc("PPT");
				}else {
					vo.setShowTypeDesc("图片");
				}
			}
			
			if(vo.getShowOrder()!=null) {
				if(vo.getShowOrder()!=-1) {
					vo.setShowOrNot("正常播放");
				}else {
					vo.setShowOrNot("不播放");
				}
			}else {
				vo.setShowOrNot("");
			}
			
			String desc = "";
			
			String du = config.getShowDuration();
			
			if (IsNotNullValit.StringIsNotNull(du)) {
				
				String[] duratino = du.split(",");
				
				for (int j = 0; j < duratino.length; j++) {
					
					switch (j) {
					case 0:
						if (IsNotNullValit.StringIsNotNull(duratino[j])) {
							desc += duratino[j]+"时";
							vo.setHour(duratino[j]);
						}
						
						continue;
					case 1:
						
						if (IsNotNullValit.StringIsNotNull(duratino[j])) {
							desc += duratino[j]+"分";
							vo.setMinute(duratino[j]);
						}
						continue;
					case 2:
						if (IsNotNullValit.StringIsNotNull(duratino[j])) {
							desc += duratino[j]+"秒";
							vo.setSecond(duratino[j]);
						}
						continue;
						
					default:
						break;
					}
					
				}
			}
			
			
			vo.setDurationDesc(desc);
			
			vos.add(vo);
			
		}
		
		return vos;
	}

	@Override
	public List<MesConfigListVO> getConfigListByPolingConfigId(String polingConfigId) {
		
		List<MesConfigListVO> vos = new ArrayList<MesConfigListVO>();
		
		List<MesConfigList> configlists = configListRespository.getConfigListByPolingConfigId(polingConfigId);
		
		for (int i = 0; i < configlists.size(); i++) {
			
			MesConfigList config = configlists.get(i);
			
			MesConfigListVO vo = new MesConfigListVO();
			
			BeanUtils.copyProperties(config, vo);
			
			//将类型转化成文字
			if(IsNotNullValit.StringIsNotNull(vo.getShowType())) {
				if("video".equals(vo.getShowType())) {
					vo.setShowTypeDesc("视频");
				}else if("table".equals(vo.getShowType())) {
					vo.setShowTypeDesc("表格");
				}else if("ppt".equals(vo.getShowType())) {
					vo.setShowTypeDesc("PPT");
				}else {
					vo.setShowTypeDesc("图片");
				}
			}
			
			if(vo.getShowOrder()!=null) {
				if(vo.getShowOrder()!=-1) {
					vo.setShowOrNot("正常播放");
				}else {
					vo.setShowOrNot("不播放");
				}
			}else {
				vo.setShowOrNot("");
			}
			
			String desc = "";
			
			String du = config.getShowDuration();
			
			if (IsNotNullValit.StringIsNotNull(du)) {
				
				String[] duratino = du.split(",");
				
				for (int j = 0; j < duratino.length; j++) {
					
					switch (j) {
					case 0:
						if (IsNotNullValit.StringIsNotNull(duratino[j])) {
							desc += duratino[j]+"时";
							vo.setHour(duratino[j]);
						}
						
						continue;
					case 1:
						
						if (IsNotNullValit.StringIsNotNull(duratino[j])) {
							desc += duratino[j]+"分";
							vo.setMinute(duratino[j]);
						}
						continue;
					case 2:
						if (IsNotNullValit.StringIsNotNull(duratino[j])) {
							desc += duratino[j]+"秒";
							vo.setSecond(duratino[j]);
						}
						continue;
						
					default:
						break;
					}
					
				}
			}
			
			
			vo.setDurationDesc(desc);
			
			vos.add(vo);
			
		}
		
		return vos;
	}
	
	@Override
	public MesConfigListVO getConfigListById(String id) {
		MesConfigList configList = configListRespository.findOne(id);
		
		MesConfigListVO vo = new MesConfigListVO();
		
		BeanUtils.copyProperties(configList, vo);
		
		String duration = configList.getShowDuration();
		
		String[] dus = duration.split(",");
		
		for (int i = 0; i < dus.length; i++) {
			switch (i) {
			case 0:
				vo.setHour(dus[i]);
				continue;
			case 1:
				vo.setMinute(dus[i]);
				continue;
			case 2:
				vo.setSecond(dus[i]);
				continue;
			default:
				break;
			}
		}
		
		return vo;
	}

	@Override
	public void addConfig(MesConfigList configList) {

		configListRespository.save(configList);
	}

	@Override
	public void updateConfig(MesConfigList configList) {

		configListRespository.save(configList);
	}

	@Override
	public void deleteConfig(String id) {

		configListRespository.delete(id);
	}
	
	@Override
	public List<MesConfigList> getConfigListByMaterialId(String materialId) {
		return this.configListRespository.getConfigListByMaterialId(materialId);
	}

	@Override
	public void configPushById(String id) {
		MesConfigList config = this.configListRespository.findOne(id);
		Integer i = this.configListRespository.findMaxShowOrder(config.getPollingConfigId());
		config.setShowOrder(i+1);
		this.configListRespository.save(config);
	}

	@Override
	public void configRejectById(String id) {
		MesConfigList config = this.configListRespository.findOne(id);
		config.setShowOrder(-1);
		this.configListRespository.save(config);
	}

}
